LCML/Строки

abbrev

abbrev - Функция abbrev сокращает строку до указанной ширины, добавляя троеточие (…) в конце.

Метод

abbrev(width, s)

Part: LCML/Строки

Если длина строки меньше указанной ширины, она возвращается без изменений. Минимальная ширина — 4 символа.

Формат

abbrev width s

  • width: Максимальная длина строки. Должна быть не менее 4.

  • s: Исходная строка для сокращения. Результат

Возвращает строку, сокращенную до width - 3 символов, с троеточием (…) в конце. Если ширина недостаточна, возникает ошибка.

Примеры использования

Сокращение строки с троеточием в конце: {{ $result := abbrev 8 “hello world” }} {{ $result }} >> hello…

Без сокращения, так как строка короче максимальной ширины: {{ $result := abbrev 15 “hello world” }} {{ $result }} >> hello world

Минимальная допустимая ширина: {{ $result := abbrev 4 “hello world” }} {{ $result }} >> h…


abbrevboth

abbrevboth - Функция abbrevboth сокращает строку до указанной ширины, добавляя троеточия (…) как в начале, так и в конце строки.

Метод

abbrevboth(offset, width, s)

Part: LCML/Строки

Это позволяет сохранить ключевую часть строки в середине. Минимальная ширина — 7 символов.

Формат

abbrevboth offset width s

  • offset: Смещение строки, указывающее, какую часть оставить видимой.

  • width: Максимальная длина строки. Должна быть не менее 7.

  • s: Исходная строка для сокращения. Результат

Возвращает строку, сокращенную до width, с троеточиями в начале и конце, если это необходимо. Центральная часть строки будет видимой.

Примеры использования

Сокращение строки с троеточиями в начале и конце, оставляя середину видимой: {{ $result := abbrevboth 5 10 “abcdefghijklmno” }} {{ $result }} >>…fghi…

Без сокращения, так как строка короче максимальной ширины: {{ $result := abbrevboth 0 25 “hello wonderful world” }} {{ $result }} >> hello wonderful world

Ошибка из-за недостаточной ширины: {{ $result := abbrevboth 5 6 “abcdefghij” }} {{ $result }} >> stringutils illegal argument: Minimum abbreviation width with offset is 7


adler32sum

adler32sum - Функция возвращает Adler-32 хэш от входной строки.

Метод

Part: LCML/Строки

Формат

adler32sum input

  • input — строка, для которой нужно вычислить Adler-32 хэш. Результат

Возвращает строку, содержащую хэш в шестнадцатеричном виде.

Пример использования

{{ $hashedString := adler32sum $exampleString }} {{ $hashedString }} >> 232806872


cat

cat - Функция cat объединяет строки, удаляя пустые значения (nil).

Метод

Part: LCML/Строки

Формат

cat v…

  • v: список элементов. Результат

Объединенная строка.

Пример использования

{{ $result := cat “hello” “” “world” }} {{ $result }} >> hello world


concatenation

concatenation - Объединение строк (deprecated: concatination)

Метод

concatenation value1 value2 …

Part: LCML/Строки

Функция concatenation объединяет переданные текстовые значения в одну строку и возвращает результат. Количество аргументов не ограничено.

Функция полезна для объединения строк без дополнительных разделителей.

Формат

concatenation value1 value2 ...
  • value1, value2,… - строки, которые необходимо объединить. Результат

Функция возвращает строку, состоящую из всех переданных значений, соединённых без разделителей.

Пример использования

{{ concatenation "Ехал " "Грека " "через " "реку" }}

Ехал Грека через реку

{{ concatenation "Hello, " "World!" }}

Hello, World!


contains

contains - Проверка наличия подстроки в строке

Метод

contains str substr message messageelse

Part: LCML/Строки

Функция contains ищет указанную подстроку (или несколько подстрок) в строке и возвращает одно из заданных сообщений в зависимости от результата.

Формат

contains str substr message messageelse
  • str - строка, в которой выполняется поиск.
  • substr - подстрока или несколько подстрок, разделённых символом |, которые необходимо найти.
  • message - текст, возвращаемый в случае нахождения хотя бы одной из подстрок.
  • messageelse - текст, возвращаемый в случае, если подстрока не найдена. Результат

Возвращает message, если хотя бы одна из подстрок из substr найдена в строке str. В противном случае возвращает messageelse.

Пример использования

{{ contains "Ехал Грека через реку" "Грека|через" "Найдено" "Не найдено" }}

Найдено

{{ contains "Ехал Грека через реку" "мост" "Подстрока найдена" "Подстрока отсутствует" }}

Подстрока отсутствует

{{ contains "Погода сегодня солнечная" "дождь|снег" "Есть осадки" "Без осадков" }}

Без осадков


contains1

contains1 - Проверка наличия подстроки в строке

Метод

contains1 message str substr

Part: LCML/Строки

Функция contains1 выполняет поиск подстроки (или нескольких подстрок, разделённых символом | ) в строке и возвращает заданное сообщение, если подстрока найдена.

Эта функция полезна для ситуаций, когда нужно просто вернуть сообщение при наличии совпадений, а текст в случае отсутствия подстроки не требуется.

Формат

contains1 message str substr
  • message - текст, возвращаемый в случае нахождения подстроки.

  • str - строка, в которой осуществляется поиск.

  • substr - подстрока или несколько подстрок, разделённых символом |, которые необходимо найти. Результат

Возвращает message, если хотя бы одна из подстрок из substr найдена в строке str. Если ничего не найдено, возвращается пустая строка.

Пример использования

{{ contains1 "Найдено!" "Ехал Грека через реку" "Грека|через" }}

Найдено!

{{ contains1 "Есть совпадение" "Погода сегодня солнечная" "дождь|снег" }}
{{ contains1 "Обнаружено" "Ищем ключевое слово" "ключ|слово" }}

Обнаружено


convert

convert - Конвертация текста в заданную кодировку

Метод

convert content targetEncoding

Part: LCML/Строки

Функция convert преобразует содержимое слайса байтов в указанную кодировку: UTF-8, UTF-8 BOM, или windows-1251.

Если исходные данные не соответствуют поддерживаемым кодировкам, возвращается nil.

Поддерживаемые кодировки:

  • UTF-8

  • UTF-8 BOM

  • windows-1251 Формат

    convert content targetEncoding
    
  • content - слайс байтов, содержащий исходный текст.

  • targetEncoding - целевая кодировка ( UTF-8, UTF-8 BOM, windows-1251 ). Результат

Возвращает преобразованный слайс байтов в целевой кодировке или nil, если исходные данные не распознаны или имеют неподдерживаемую кодировку.

Пример использования

Пользовательский сценарий: открываем файл и при кодировке не равной UTF-8 - конвертируем.


{{ $open_file := readfile $file_url }}
{{ $encoding := detectencoding $open_file }}
{{ if ne $encoding "UTF-8" }}
{{ $open_file = convert $open_file "UTF-8" }}
{{ end }}

cut

cut - Обрезка строки по количеству символов

Метод

Part: LCML/Строки

Функция cut позволяет обрезать строку до заданного количества символов, добавляя указанный суффикс (например, троеточие… ) после последнего обрезанного символа.

Формат:

cut string length suffix
  • string - исходная строка, которую нужно обрезать.
  • length - максимальное количество символов в результирующей строке.
  • suffix - строка, добавляемая в конце обрезанной строки (например,… ). Результат:

Возвращает строку, обрезанную до указанной длины, с добавлением заданного суффикса. Если длина строки меньше или равна заданному количеству символов, строка возвращается без изменений.

Пример использования:

{{ cut "Ехал Грека чере реку" 2 }}

Результат: Ехал Грека…


decodebase64

decodebase64 - Кодирование строки в Base64

Метод

Part: LCML/Строки

Формат

decodebase64 payload

  • payload (string) — Строка, которую нужно закодировать в Base64. Результат

Возвращает строку в формате Base64.

Пример использования


detectencoding

detectencoding - Определение кодировки текстового содержимого

Метод

Part: LCML/Строки

Функция detectencoding определяет кодировку текстового содержимого.

Формат:

detectencoding content
  • content — слайс байтов, содержащий текстовые данные, для которых необходимо определить кодировку. Результат:

Возвращает строку, содержащую определённое название кодировки, например, UTF-8, UTF-8 BOM, windows-1251.

В случае ошибки возвращает текст ошибки, например “Charset not detected.”

Пример использования:

{{ $encoding := detectencoding $open_file }}

initials

initials - Функция initials возвращает инициалы из строки.

Метод

Part: LCML/Строки

Формат

initials s

  • s: строка для обработки. Результат

Возвращает строку с инициалами.

Пример использования

{{ $result := initials “Ivan Lovetsky” }} {{ $result }} >> IL


invert

invert - Инвертирование строки

Метод

Part: LCML/Строки

Функция invert переворачивает строку, возвращая символы в обратном порядке.

Формат:

invert str
  • str — строка, которую нужно инвертировать. Результат:

Возвращает строку, символы которой расположены в обратном порядке.

Пример использования:

{{ $reversedMes := invert "string" }}

join

join - Функция join объединяет элементы в строку с указанным разделителем.

Метод

Part: LCML/Строки

Формат

join sep v

  • sep: разделитель.
  • v: значения для объединения (срез или массив). Результат

Возвращает строку из элементов, объединённых с sep.

Пример использования

{{ $result := join “, ” (list “sun” “moon” “sky”) }} {{ $result }} >> sun, moon, sky


indent nindent

indent nindent - Функции indent и nindent добавляют отступы к строкам. Nindent добавляет дполнительно отступ перед строками.

Метод

Part: LCML/Строки

Формат

indent spaces v nindent spaces v

  • spaces: количество пробелов для отступа.

  • v: строка для обработки. Пример использования

{{ $result := indent 4 “hello\nworld” }} {{ $result }} >> hello world

{{ $result := nindent 4 “hello\nworld” }} {{ $result }} >>

hello world


plural

plural - Функция plural выбирает форму строки в зависимости от количества.

Метод

Part: LCML/Строки

Формат

plural one many count

  • one: строка для единственного числа.

  • many: строка для множественного числа.

  • count: количество, определяющее форму. Результат

Возвращает строку, соответствующую переданному количеству (one, если count = 1, иначе many).

Пример использования

{{ $result := plural “wolf” “wolves” 1 }} {{ $result }} >> wolf

{{ $result := plural “wolf” “wolves” 3 }} {{ $result }} >> wolves


replace

replace - Заменяем подстроки в строке

Метод

Part: LCML/Строки

Функция replace производит замену указанных подстрок в строке с возможностью ограничения количества замен.

Формат:

replace str old new n
  • str — исходная строка, в которой нужно выполнить замену.
  • old — подстрока, которую необходимо заменить.
  • new — подстрока, на которую будет выполнена замена.
  • n (целое число) — количество замен:
  • -1 — заменить все вхождения.

Результат:

Возвращает строку с произведенными заменами.

Пример использования:

{{ replace "Ехал Грека через реку" "Грека" "Василий" -1 }}

Результат:

Ехал Василий через реку

rereplace

rereplace - Заменяем с использованием регулярного выражения

Метод

Part: LCML/Строки

Функция rereplace позволяет заменять подстроки, соответствующие регулярному выражению.

Формат:

rereplace str mask new
  • str — исходная строка.
  • mask — регулярное выражение для поиска подстрок, которые нужно заменить.
  • new — подстрока или регулярное выражение, на которое выполняется замена. Результат:

Возвращает строку, в которой подстроки, соответствующие шаблону, заменены на указанное значение.

Примеры использования:

Пример 1:

{{ rereplace "abc-123-xyz" "\\d+" "456" }}
>> abc-456-xyz

Пример 2 (сценарий):


{{ $description := "Курс для начинающих программистов 101. Контакты: 123-456." }}
{{ $updatedDescription := replace $description "101" "Основы программирования на Go" -1 }}
{{ $finalDescription := rereplace $updatedDescription "\\d{3}-\\d{3}" "[контактный номер скрыт]" }}
>> Курс для начинающих программистов Основы программирования на Go. Контакты: [контактный номер скрыт].

sortalpha

sortalpha - Функция sortalpha выполняет сортировку строкового представления элементов списка в алфавитном порядке.

Метод

Part: LCML/Строки

Формат

sortalpha list

  • list: Список элементов, которые нужно отсортировать. Результат

Возвращает новый список, отсортированный в алфавитном порядке.

Пример использования

{{ $list := list “sun” “moon” “sky” }} {{ $sorted := sortalpha $list }} {{ $sorted }} >> [moon sky sun]


split

split - Функция split разделяет строку по указанному разделителю и возвращает результат в виде слайса строк. Возвращает interface{}, что означает, что результат может быть любым типом, и нужно будет привести его к нужному типу, чтобы работать с ним как с конкретным типом (например, слайсом строк).

Метод

Part: LCML/Строки

Формат:

split str sep
  • str — строка, которую необходимо разделить.
  • sep — строка-разделитель, по которому будет происходить разделение. Результат:

Возвращает срез строк в виде интерфейса.

Пример использования:


{{$splitResult := split "apple,banana,watermelon" ","}}
{{$splitResult}}

Результат:

["apple", "banana", "watermelon"]

splitn

splitn - Функция splitn разбивает строку на части по разделителю, ограничивая количество частей.

Метод

Part: LCML/Строки

Формат

splitn sep n orig

  • sep: разделитель.

  • n: максимальное количество частей.

  • orig: строка для разбиения. Результат

Возвращает мапу с индексами частей как ключами и частями строки как значениями.

Пример использования

{{ $result := splitn “, ” 2 “a, b, c” }} {{ $result }} >> map[_0:a _1:b,c]


splittostring

splittostring - Функция splittoString разделяет строку по указанному разделителю и возвращает результат в виде слайса строк. В отличие от SPLIT, возвращает конкретный тип []string, так что результат сразу готов для использования как слайс строк.

Метод

Part: LCML/Строки

Формат:

splittostring str sep
  • str — строка, которую необходимо разделить.
  • sep — строка-разделитель, по которому будет происходить разделение. Результат:

Возвращает срез строк.

Пример использования:


{{$splitResult := splittostring "apple,banana,cherry" ","}}
{{$splitResult}}
>> ["apple", "banana", "cherry"]

quote squote

quote squote - Функции quote и squote оборачивают строки в кавычки или апострофы.

Метод

Part: LCML/Строки

Формат

quote str… squote str…

  • str: список строк для обработки. Примеры использования

{{ $result := quote “hello” “world” }} {{ $result }} >> “hello” “world”

{{ $result := squote “hello” “world” }} {{ $result }} >> 'hello' 'world'


substring

substring - Функция substring вырезает подстроку из переданной строки. Исходная строка при этом остаётся неизменной.

Метод

Part: LCML/Строки

Формат:

substring str from count
  • str — строка, из которой будет вырезаться подстрока.
  • from — позиция первого символа для вырезания (нумерация начинается с 0). Если отрицательное, отсчёт ведётся с конца строки.
  • count — количество символов для вырезания. Если не указано, вырезание продолжается до конца строки. Результат:

Возвращает вырезанную подстроку. Если параметры выходят за пределы длины строки, результат обрезается автоматически.

Примеры использования:

{{ substring "abcde" 1 3 }}

Результат:

"bcd"
{{ substring "abcde" 2 }}

Результат:

"cde"
{{ substring "abcde" -3 }}

Результат:

"cde"
{{ substring "abcde" 1 10 }}

Результат:

"bcde"

trunc

trunc - Функция trunc обрезает строку до заданной длины.

Метод

Part: LCML/Строки

Формат

trunc c s

  • c: количество символов (положительное или отрицательное).

  • s: строка для обрезки. Результат

Возвращает строку, обрезанную до c символов.

Пример использования

{{ $result := trunc 5 “hello world” }} {{ $result }} >> hello

{{ $result := trunc -5 “hello world” }} {{ $result }} >> world


untitle

untitle - Функция untitle преобразует строку, делая первую букву каждого слова строчной. В качестве разделителя функция использует пробел.

Метод

Part: LCML/Строки

Формат

untitle str

  • str: входная строка. Результат Возвращает строку, в которой первый символ каждого слова преобразован в строчную букву.

Пример использования

{{ $result := untitle “Hello World” }} {{ $result }} >> hello world